﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Controllers;
using GestorDeFlotasDesktop.Listados;

namespace GestorDeFlotasDesktop
{
    public partial class frmPrincipal : Form
    {
        public frmPrincipal()
        {
            InitializeComponent();
        }

        public int UsuarioId { get; set; }

        private void frmPrincipal_Load(object sender, EventArgs e)
        {
            var funcionalidades = UsuarioController.ObtenerFuncionalidadesPorUsuario(UsuarioId);

            btnCliente.Visible = funcionalidades.Contains("ABM de Cliente");
            btnRol.Visible = funcionalidades.Contains("ABM de Rol");
            btnUsuario.Visible = funcionalidades.Contains("ABM de Usuario");
            btnAuto.Visible = funcionalidades.Contains("ABM de Auto");
            btnReloj.Visible = funcionalidades.Contains("ABM de Reloj");
            btnChofer.Visible = funcionalidades.Contains("ABM de Chofer");
            btnTurno.Visible = funcionalidades.Contains("ABM de Turno");
            btnAsignaciones.Visible = funcionalidades.Contains("Asignacion Chofer-Auto");
            btnRegistroViajes.Visible = funcionalidades.Contains("Registro de Viajes");
            btnFacturar.Visible = funcionalidades.Contains("Facturacion a Cliente");
            btnListados.Visible = funcionalidades.Contains("Listado Estadístico");
            btnRendiciones.Visible = funcionalidades.Contains("Rendicion de cuenta del chofer");

            ValidarRepetidos();
            
        }

        private void ValidarRepetidos ()
        {
            var lista = ViajeController.ObtenerViajesDuplicados(1, 10);

            if (lista.Count >0)
            {
                DialogResult result = MessageBox.Show("En la migracion de datos se encontraron viajes repetido. Desea resolverlo?", "Viajes Repetidos", MessageBoxButtons.YesNoCancel);

                if (result == DialogResult.Yes)
                {
                    var lstRepetidos = new lstViajesRepetidos{ MdiParent = this };
                    lstRepetidos.Show();
                }else
                {
                    Show();
                }
            }
        }

        private void btnClienteAlta_Click(object sender, EventArgs e)
        {
            var abmClientes = new AbmCliente { operacion = Operacion.Alta, MdiParent = this };
            abmClientes.Show();
        }

        private void btnClienteBaja_Click(object sender, EventArgs e)
        {
            var lstClientes = new lstClientes { MdiParent = this, operacion = Operacion.Baja };
            lstClientes.Show();
        }

        private void btnClienteModificar_Click(object sender, EventArgs e)
        {
            var lstClientes = new lstClientes { MdiParent = this, operacion = Operacion.Modificacion };
            lstClientes.Show();
        }

        private void btnChoferAlta_Click(object sender, EventArgs e)
        {
            var abmChoferes = new AbmChofer { operacion = Operacion.Alta, MdiParent = this };
            abmChoferes.Show();
        }

        private void btnChoferBaja_Click(object sender, EventArgs e)
        {
            var lstChoferes = new lstChoferes { MdiParent = this, operacion = Operacion.Baja };
            lstChoferes.Show();
        }

        private void btnChoferModificar_Click(object sender, EventArgs e)
        {
            var lstChoferes = new lstChoferes { MdiParent = this, operacion = Operacion.Modificacion };
            lstChoferes.Show();
        }

        private void btnRelojAlta_Click(object sender, EventArgs e)
        {
            var abmRelojes = new AbmReloj { operacion = Operacion.Alta, MdiParent = this };
            abmRelojes.Show();
        }

        private void btnRelojBaja_Click(object sender, EventArgs e)
        {
            var lstRelojes = new lstRelojes { MdiParent = this, operacion = Operacion.Baja };
            lstRelojes.Show();
        }

        private void btnRelojModificar_Click(object sender, EventArgs e)
        {
            var lstRelojes = new lstRelojes { MdiParent = this, operacion = Operacion.Modificacion };
            lstRelojes.Show();
        }

        private void btnTurnoModificar_Click(object sender, EventArgs e)
        {
            var lstTurnos = new lstTurnos { MdiParent = this, operacion = Operacion.Modificacion };
            lstTurnos.Show();
        }

        private void btnTurnoAlta_Click(object sender, EventArgs e)
        {
            var abmTurnos = new AbmTurno { operacion = Operacion.Alta, MdiParent = this };
            abmTurnos.Show();

        }

        private void btnTurnoBaja_Click(object sender, EventArgs e)
        {
            var lstTurnos = new lstTurnos { MdiParent = this, operacion = Operacion.Baja };
            lstTurnos.Show();
        }

        private void btnUsuarioAlta_Click(object sender, EventArgs e)
        {
            var AbmUsuario = new AbmUsuario { operacion = Operacion.Alta, MdiParent = this };
            AbmUsuario.Show();
        }

        private void btnUsuarioBaja_Click(object sender, EventArgs e)
        {
            var lstUsuarios = new lstUsuarios { MdiParent = this, operacion = Operacion.Baja };
            lstUsuarios.Show();
        }

        private void btnUsuarioModificar_Click(object sender, EventArgs e)
        {
            var lstUsuarios = new lstUsuarios { MdiParent = this, operacion = Operacion.Modificacion };
            lstUsuarios.Show();
        }

        private void btnAutoAlta_Click(object sender, EventArgs e)
        {
            var AbmAuto = new AbmAuto { operacion = Operacion.Alta, MdiParent = this };
            AbmAuto.Show();
        }

        private void btnAutoBaja_Click(object sender, EventArgs e)
        {
            var lstAutos = new lstAutos { MdiParent = this, operacion = Operacion.Baja };
            lstAutos.Show();
        }

        private void btnAutoModificar_Click(object sender, EventArgs e)
        {
            var lstAutos = new lstAutos { MdiParent = this, operacion = Operacion.Modificacion };
            lstAutos.Show();
        }

        private void btnRolAlta_Click(object sender, EventArgs e)
        {
            var abmrol = new AbmRol { operacion = Operacion.Alta, MdiParent = this };
            abmrol.Show();
        }

        private void btnRolBaja_Click(object sender, EventArgs e)
        {
            var lstRol = new lstRoles { MdiParent = this, operacion = Operacion.Baja };
            lstRol.Show();

        }

        private void btnRolModificar_Click(object sender, EventArgs e)
        {
            var lstRol = new lstRoles { MdiParent = this, operacion = Operacion.Modificacion };
            lstRol.Show();
        }

        private void btnAsignaciones_Click(object sender, EventArgs e)
        {
            var form = new AsignacionChoferAuto { MdiParent = this };
            form.Show();
        }

        private void btnListados_Click(object sender, EventArgs e)
        {
            var form = new lstEstadisticos { MdiParent = this };
            form.Show();
        }

        private void btnFacturar_Click(object sender, EventArgs e)
        {
            var form = new Facturacion.Facturacion { MdiParent = this };
            form.Show();
        }

        private void btnRepetidos_Click(object sender, EventArgs e)
        {
            var form = new lstViajesRepetidos{ MdiParent = this };
            form.Show();
        }

        private void btnRegistroViajes_Click(object sender, EventArgs e)
        {
            var form = new RegistrarViajes { MdiParent = this };
            form.Show();
        }

        private void btnRendiciones_Click(object sender, EventArgs e)
        {
            var form = new RendirViajes { MdiParent = this };
            form.Show();
        }


    }
}
